/* 
 * File:   treeviewFilter.hpp
 * Author: ednei
 *
 * Created on 7 de Junho de 2014, 09:32
 */

#ifndef TREEVIEW_FILTER_HPP
#define	TREEVIEW_FILTER_HPP

#include <biblioteca.h>
#include <banco.h>

using namespace std;

/*
 * TreeModel que recebe os dados da
 * filtragem de pacotes
 */
class FILTROPACOTE : public Gtk::TreeModel::ColumnRecord {
public:
    FILTROPACOTE();
    Gtk::TreeModelColumn<string> Interface, origem, portaOrigem, destino, portaDestino, protocolo, quantidade;
    Gtk::TreeModelColumn<bool> visible;
};

class treeview_filter : public Gtk::TreeView {
public:

    treeview_filter();

    /*
     * Método que adiciona conteudo a treeview
     */
    void content_filter();

    /*
     * Método que deleta o conteudo da treeview
     * Retorna true caso tenha excluido com sucesso
     */
    bool delete_row();

    /*
     * Método que retorna dados da linha selecionada
     * Retorna uma string com os dados
     */
    string create_by_row();

    /*
     * Método que solicita a filtragem de dados na treeview
     * a partir de uma linha selecionada e qual coluna de referencia
     * str Nome da coluna de referencia
     */
    void reorder_row(string str);

private:
    FILTROPACOTE filtro;
    Glib::RefPtr<Gtk::ListStore> pt_filtro;
    Glib::RefPtr<Gtk::TreeModelFilter> treemodelfilter;
    Gtk::TreeModel::Row row;

    string rowselect;
    string column;

    /*
     * Método que reordena os dados da treeview
     * iter "Ponteiro" para linha
     * retorna true se a linha será exibida ou false caso contrario.
     */
    virtual bool order_row_visible(const Gtk::TreeModel::const_iterator& iter);
};

#endif	/* TREEVIEW_FILTER_HPP */
